package pokerTest;

import static org.junit.Assert.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import cartaPoker.CartaPoker;
import poker.PokerStatus;

public class PokerPokerVerificaccionTest {

	PokerStatus controladorPoker;
	CartaPoker primeraCarta;
	CartaPoker segundaCarta;
	CartaPoker terceraCarta;
	CartaPoker cuartaCarta;
	CartaPoker quintaCarta;

	/**
	 * @throws java.lang.Exception
	 */
	@Before
	public void setUp() throws Exception {
		this.controladorPoker = new PokerStatus();
	}

	@Test
	public void siTodasLasCartasSonDeNumerosDiferentesPeroDelMismoPaloElMetodoVerificarDebeRetornarFalso() {

		primeraCarta = new CartaPoker("P", "A");
		segundaCarta = new CartaPoker("P", "2");
		terceraCarta = new CartaPoker("P", "3");
		cuartaCarta = new CartaPoker("P", "5");
		quintaCarta = new CartaPoker("P", "6");

		assertFalse(controladorPoker.verificar(primeraCarta, segundaCarta,
				terceraCarta, cuartaCarta, quintaCarta) == "Poker");
	}

	@Test
	public void siTodasLasCartasSonDeNumerosyDeDiferentePaloElMetodoVerificarDebeRetornarFalso() {

		primeraCarta = new CartaPoker("P", "A");
		segundaCarta = new CartaPoker("T", "2");
		terceraCarta = new CartaPoker("P", "3");
		cuartaCarta = new CartaPoker("P", "5");
		quintaCarta = new CartaPoker("P", "6");

		assertFalse(controladorPoker.verificar(primeraCarta, segundaCarta,
				terceraCarta, cuartaCarta, quintaCarta) == "Poker");

	}

	@Test
	public void siSeDanPorLoMenosDosCartasDiferentesElMetodoVerificarDebeRetornarFalso() {

		primeraCarta = new CartaPoker("P", "A");
		segundaCarta = new CartaPoker("D", "2");
		terceraCarta = new CartaPoker("C", "3");
		cuartaCarta = new CartaPoker("P", "5");
		quintaCarta = new CartaPoker("P", "6");

		assertFalse(controladorPoker.verificar(primeraCarta, segundaCarta,
				terceraCarta, cuartaCarta, quintaCarta) == "Poker");

	}

	@Test
	public void siSeDanPorLoMenosTresCartasDiferentesElMetodoVerificarDebeRetornarFalso() {

		primeraCarta = new CartaPoker("P", "A");
		segundaCarta = new CartaPoker("P", "2");
		terceraCarta = new CartaPoker("P", "3");
		cuartaCarta = new CartaPoker("P", "5");
		quintaCarta = new CartaPoker("P", "6");

		assertFalse(controladorPoker.verificar(primeraCarta, segundaCarta,
				terceraCarta, cuartaCarta, quintaCarta) == "Poker");

	}

	@Test
	public void siSeDanPorLoMenosCuatroCartasIgualesElMetodoVerificarDebeRetornarVerdadero() {
		primeraCarta = new CartaPoker("P", "2");
		segundaCarta = new CartaPoker("D", "2");
		terceraCarta = new CartaPoker("P", "3");
		cuartaCarta = new CartaPoker("P", "2");
		quintaCarta = new CartaPoker("P", "2");

		assertTrue(controladorPoker.verificar(primeraCarta, segundaCarta,
				terceraCarta, cuartaCarta, quintaCarta) == "Poker");

	}

	@Test
	public void siLaPrimeraCartaEsLaDiferenteElMetodoDaVerdadero() {
		primeraCarta = new CartaPoker("P", "A");
		segundaCarta = new CartaPoker("T", "2");
		terceraCarta = new CartaPoker("P", "2");
		cuartaCarta = new CartaPoker("P", "2");
		quintaCarta = new CartaPoker("P", "2");

		assertTrue(controladorPoker.verificar(primeraCarta, segundaCarta,
				terceraCarta, cuartaCarta, quintaCarta) == "Poker");
	}

	@Test
	public void siLaSegundaCartaEsLaUnicaDiferenteDaVerdadero() {
		primeraCarta = new CartaPoker("P", "A");
		segundaCarta = new CartaPoker("D", "2");
		terceraCarta = new CartaPoker("P", "A");
		cuartaCarta = new CartaPoker("P", "A");
		quintaCarta = new CartaPoker("P", "A");

		assertTrue(controladorPoker.verificar(primeraCarta, segundaCarta,
				terceraCarta, cuartaCarta, quintaCarta) == "Poker");
	}

	@Test
	public void siLaTerceraCartaEsLaUnicaDiferenteDaVerdadero() {
		primeraCarta = new CartaPoker("P", "2");
		segundaCarta = new CartaPoker("P", "2");
		terceraCarta = new CartaPoker("T", "3");
		cuartaCarta = new CartaPoker("P", "2");
		quintaCarta = new CartaPoker("P", "2");
		assertTrue(controladorPoker.verificar(primeraCarta, segundaCarta,
				terceraCarta, cuartaCarta, quintaCarta) == "Poker");

	}

	@Test
	public void siLaCuartaCartaEsLaDiferenteDaVerdadero() {
		primeraCarta = new CartaPoker("P", "6");
		segundaCarta = new CartaPoker("T", "6");
		terceraCarta = new CartaPoker("P", "6");
		cuartaCarta = new CartaPoker("D", "5");
		quintaCarta = new CartaPoker("P", "6");

		assertTrue(controladorPoker.verificar(primeraCarta, segundaCarta,
				terceraCarta, cuartaCarta, quintaCarta) == "Poker");

	}

	@Test
	public void siLaQuintaCartaEsLaDiferenteDaVerdadero() {
		primeraCarta = new CartaPoker("P", "5");
		segundaCarta = new CartaPoker("P", "5");
		terceraCarta = new CartaPoker("T", "5");
		cuartaCarta = new CartaPoker("P", "5");
		quintaCarta = new CartaPoker("P", "6");

		assertTrue(controladorPoker.verificar(primeraCarta, segundaCarta,
				terceraCarta, cuartaCarta, quintaCarta) == "Poker");

	}

	/**
	 * @throws java.lang.Exception
	 */
	@After
	public void tearDown() throws Exception {
	}

}
